package types

import "fmt"

// DemoBasicTypes 展示Go的基本数据类型和变量
func DemoBasicTypes() {
	// 基本类型
	var integer int = 42
	var floatNum float64 = 3.14159
	var boolean bool = true
	var str string = "Hello, Go!"
	
	fmt.Printf("整数: %d (类型: %T)\n", integer, integer)
	fmt.Printf("浮点数: %.2f (类型: %T)\n", floatNum, floatNum)
	fmt.Printf("布尔值: %t (类型: %T)\n", boolean, boolean)
	fmt.Printf("字符串: %s (类型: %T)\n", str, str)
	
	// 简短变量声明
	count := 100
	message := "Go语言"
	fmt.Printf("简短声明 - 计数: %d, 消息: %s\n", count, message)
	
	// 数组
	var numbers [5]int
	numbers[0] = 10
	numbers[1] = 20
	fmt.Println("数组:", numbers)
	
	// 切片
	slice := []int{1, 2, 3, 4, 5}
	fmt.Println("切片:", slice)
	fmt.Println("切片长度:", len(slice))
	fmt.Println("切片容量:", cap(slice))
	
	// 映射
	person := map[string]string{
		"name": "张三",
		"city": "北京",
	}
	fmt.Println("映射:", person)
	fmt.Println("姓名:", person["name"])
	
	// 结构体
	type Student struct {
		Name string
		Age  int
	}
	
	stu := Student{Name: "李四", Age: 20}
	fmt.Printf("结构体: 姓名=%s, 年龄=%d\n", stu.Name, stu.Age)
	
	// 指针
	ptr := &integer
	fmt.Printf("指针指向的值: %d\n", *ptr)
	*ptr = 100
	fmt.Printf("修改后的值: %d\n", integer)
}
